package util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.io.IOException;
import java.util.Properties;
import java.util.ResourceBundle;

/*
    jedis工具类
    工具类特点：
        1、位于util包
        2、方法都是static修饰的
        3、私有化构造方法
 */
public class JedisUtils {
    private static JedisPool pool;
    private static JedisPoolConfig config;

    private static String maxTotal;
    private static String maxWaitMillis;
    private static String maxIdle;
    private static String host;
    private static String port;

    private JedisUtils(){

    }

    static {

        /**
         * 使用propertis类读取 文件数据
         */
//        Properties properties = new Properties();
//        try {
//            properties.load(JedisUtils.class.getClassLoader().getResourceAsStream("jedis.properties"));
//            maxTotal = properties.getProperty("jedis.maxTotal");
//            maxWaitMillis = properties.getProperty("jedis.maxWaitMillis");
//            maxIdle = properties.getProperty("jedis.maxIdle");
//        } catch (IOException e) {
//            e.printStackTrace();
//        }

        /*
            ResourceBundle类  专门用来读取后缀名时.properties配置文件
                使用步骤:
                    1、static final ResourceBundle getBundle（String baseName）
                    参数：baseName表示配置文件名，没有后缀名
         */
        ResourceBundle jedis = ResourceBundle.getBundle("jedis");
        maxTotal = jedis.getString("jedis.maxTotal");
        maxWaitMillis = jedis.getString("jedis.maxWaitMillis");
        maxIdle = jedis.getString("jedis.maxIdle");
        host = jedis.getString("jedis.host");
        port = jedis.getString("jedis.port");


        //1、创建连接池配置类对象
        config = new JedisPoolConfig();
        config.setMaxTotal(Integer.parseInt(maxTotal));
        config.setMaxIdle(Integer.parseInt(maxIdle));
        //        config.setMinIdle();
        config.setMaxWaitMillis(Integer.parseInt(maxWaitMillis));
                //2、创建连接池对象
        pool = new JedisPool(config, host, Integer.parseInt(port));

    }


    public static Jedis getJedis(){
        return pool.getResource();
    }
}
